// PROGRAMA : IDCPA002
// BIBLIOTECA : SISP
// SISTEMA : INFORMACOES DE SEGURANCA PUBLICA - SISP
// CLIENTE : GEJUSPC - GERENCIA DA JUSTICA, SEGURANCA PUBLICA E
// CIDADANIA/INSTITUTO DE IDENTIFICACAO
// PROGRAMADOR : * DATA: 15/06/2000
// OBJETIVO : ATUALIZA FORMULA DATILOSCOPICA OPCAO: 'AFD'
// ATUALIZACOES
// PROGRAMA : IDCPA002
// BIBLIOTECA : SISP
// PROGRAMADOR :
// OBJETIVO : INCLUSAO NA TELA DO RG ANTERIOR, A PEDIDO DO SR.
// BONIF�CIO DATA: 19/06/2000
// INCLUSAO DO CAMPO DINHID-HORATU NO DID-HISTORICO
// 23/10/2001
package br.com.vti.sisp_sicrim.antigo.controller.programa;

import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Calendar;

import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.vti.sisp_sicrim.antigo.controller.tela.Idcpa002B;
import br.com.vti.sisp_sicrim.antigo.controller.tela.Idctaaa2;
import br.com.vti.sisp_sicrim.antigo.model.DidCadastro;
import br.com.vti.sisp_sicrim.antigo.model.DidHistorico;
import br.com.vti.sisp_sicrim.antigo.model.Estla001;
import br.com.vti.sisp_sicrim.antigo.model.Idcla001;
import br.com.vti.sisp_sicrim.antigo.model.SicTabelas;
import br.com.vti.sisp_sicrim.antigo.model.Sislac01;
import br.com.vti.sisp_sicrim.antigo.util.ExceptionProgram;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;
import br.com.vti.sisp_sicrim.antigo.util.Sisgsisp;
import br.com.vti.sisp_sicrim.antigo.util.UtilBean;

/**
 * Classe : Idcpa002 OBJETIVO : ATUALIZA FORMULA DATILOSCOPICA OPCAO: 'AFD' *
 * 
 * @author Incode - Data: mai/2014
 * 
 */
@Resource
@Path("/antigo/idcpa002")
public class Idcpa002 {
	// Views utilizadas
	SicTabelas vwTabele = new SicTabelas();
	SicTabelas vwDvetab = new SicTabelas();
	DidCadastro vwDidcad = new DidCadastro();
	DidHistorico vwDidhis = new DidHistorico();
	SicTabelas dvetabVw = new SicTabelas();
	DidCadastro didcad = new DidCadastro();
	DidCadastro viu1 = new DidCadastro();
	// Telas/relatorios utilizados
	Idcpa002B idcpa002B;
	Idctaaa2 idctaaa2;
	// Includes utilizados
	Estla001 estla001 = new Estla001();
	Idcla001 idcla001 = new Idcla001();
	Sislac01 sislac01 = new Sislac01();
	// Areas globais / session
	Sisgsisp sisgsisp;
	// Funcoes/subrotinas
	FuncoesGerais funcoes = new FuncoesGerais();

	Result result;
	Sessao sessao;
	Boolean primeiraVez = false;
	Idcpa002 idcpa002Anterior;
	String faseproc = "0";

	private String pais = "";
	private int dtat = 0;
	private int datatu = 0;
	private String chave = "";
	private int i = 0;
	private String[][] dedos = new String[6][3];
	private String[][] dedot = new String[6][3];
	private String isn = "";
	private String rgdata = "";
	private int datn = 0;
	private String p200 = "*** INSTITUTO DE IDENTIFICACAO ***";
	private String cab01 = "P-001";
	private int l = 0;
	private int primeira = 0;

	private Idctaaa2 preMapas() {
		idcpa002B = new Idcpa002B(true, sessao);
		idctaaa2 = new Idctaaa2(true, sessao);
		Arrays.fill(dedos, "");
		Arrays.fill(dedot, "");
		idctaaa2.setDataCorrente(UtilBean.obtemDataCorrente());
		idctaaa2.setDataCorrente(UtilBean.inverteDataCorrente());
		idctaaa2.setMensagemSaida("TECLE <ENTRA>");
		datn = UtilBean.obtemDataCorrente();
		estla001.qde = 1;
		estla001.esttip = 99;
		l = 0;
		// Parágrafo: r0()
		return idctaaa2;
	}

	public Idcpa002(Result result, Sessao sessao) {
		this.result = result;
		this.sessao = sessao;
	}

	@Post
	public void executar(Idcpa002B idcpa002B, Idctaaa2 idctaaa2) {
		try {
			main(idcpa002B, idctaaa2);
		} catch (Exception e) {
			ExceptionProgram excp = new ExceptionProgram();
			excp.trataErroSiscerro(e, sessao, this.getClass().getSimpleName());
		}
	}

	private void main(Idcpa002B pidcpa002B, Idctaaa2 pidctaaa2) throws Exception {
		if (pidctaaa2 == null && pidcpa002B == null) {
			primeiraVez = true;
			// idctaaa2 = new Idctaaa2 (primeiraVez);
			idctaaa2 = preMapas();
			idctaaa2.setNavegar("../idcpa002/executar");
			result.include("idctaaa2", idctaaa2);
			sessao.setAtributo("IDCPA002", this);
			idctaaa2.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
			return;
		} else {
			restaurarEstados(pidcpa002B, pidctaaa2);
		}

		sessao.getSisgsisp().setOperacao("AFD");
		sislac01.op3 = "N";
		if (!UtilBean.funcao.equals(UtilBean.ctt_retorna)) {
			chave = "";
			for (int i1 = 1; i1 <= 5; i1++) {
				for (int i2 = 1; i2 <= 2; i1++) {
					dedos[i1][i2] = "";
				}
			}
			for (int i1 = 1; i1 <= 5; i1++) {
				for (int i2 = 1; i2 <= 2; i1++) {
					dedot[i1][i2] = "";
				}
			}
			estla001.cpo = 0;
			// idcG = "";
			pais = "";
			idcla001.iNomide = "";
			idcla001.iNommae = "";
			idcla001.iDatnas = 0;
		}

		idctaaa2.receberTela(false, result);
		if (UtilBean.funcao.equals(UtilBean.ctt_retorna) || !UtilBean.funcao.equals(UtilBean.ctt_processa)) {
			idctaaa2.setMensagemSaida("TRANSACAO CANCELADA");
			sessao.setAtributo("IDCPA002", this);
			result.include("idctaaa2", idctaaa2);
			idctaaa2.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
			return;
		}
		// TELA ATUALIZACAO DO CADASTRO
		if (!UtilBean.validarMascara(UtilBean.getInitUser(), "X.......  'D       '") && !UtilBean.validarMascara(UtilBean.getInitUser(), "X.......  'S       ") && !UtilBean.validarMascara(UtilBean.getInitUser(), "X.......  'T       '")) {
			UtilBean.mensagemTexto("USUARIO NAO AUTORIZADO A USAR ESTE PROGRAMA " + UtilBean.getInitUser());
			Sispm001 sispm001 = new Sispm001(result, sessao);
			sispm001.executar(null, null, null);
		}
		if (primeira == 0) {
			critica1();
			idctaaa2.setMensagemSaida("ENTRE COM O NUMERO DO RG P/ATUALIZAR");

			primeira = 1;
			result.include("idctaaa2", idctaaa2);
			sessao.setAtributo("IDCPA002", this);
			idctaaa2.enviarTela(false, result, getClass().getSimpleName().toUpperCase());
			return;
		}
		if (UtilBean.funcao.equals(UtilBean.ctt_retorna)) {
			idctaaa2.setMensagemSaida("TRANSACAO CANCELADA");
			sessao.setAtributo("IDCPA002", this);
			result.include("idctaaa2", idctaaa2);
			idctaaa2.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
			return;
		}
		if (idctaaa2.getIregger() > 0) {
			vwDidcad.consultaNumeroRg(idctaaa2.getIregger());
		} else {
			vwDidcad.consultaRegistroAnterior(idctaaa2.getIregant());
		}
		isn = vwDidcad.getId();// *ISN(1980);
		idctaaa2.setChave("A");
		estla001.cpo = 2;
		mostrar1();
		if (faseproc.equals("1")) {
			if (sislac01.op3.equals("N")) {
				idctaaa2.setMensagemSaida("REGISTRO ALTERADO OK.");
				vwDidcad.pesquisaPorId();
				mover();
				vwDidcad.atualiza();
				// dao.commit();
				// dao.rollback();
			}
			historico();

			if (vwDidcad.registrosProcessados() == 0) {
				idctaaa2.enviarMensagem("numposto", "");
				return;
			}
		} else {
			faseproc = "1";
		}
		sessao.setAtributo("IDCPA002", this);
		result.include("idctaaa2", idctaaa2);
		idctaaa2.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
	}

	private void mostrar1() {
		idctaaa2.setIregger(didcad.getNumeroRg());
		idctaaa2.setIregant(didcad.getRegistroAnterior());
		idcla001.iDatnas = didcad.getDataNasc();
		idctaaa2.setInomide(didcad.getNomeIdent());
		idctaaa2.setInommae(didcad.getNomeMae());
		idctaaa2.setDedos(1, 1, didcad.getPolegarDireito());
		idctaaa2.setDedos(2, 1, didcad.getIndicadorDireito());
		idctaaa2.setDedos(3, 1, didcad.getMedioDireito());
		idctaaa2.setDedos(4, 1, didcad.getAnularDireito());
		idctaaa2.setDedos(5, 1, didcad.getMinimoDireito());
		idctaaa2.setDedos(1, 2, didcad.getPolegarEsquerdo());
		idctaaa2.setDedos(2, 2, didcad.getIndicadorEsquerdo());
		idctaaa2.setDedos(3, 2, didcad.getMedioEsquerdo());
		idctaaa2.setDedos(4, 2, didcad.getAnularEsquerdo());
		idctaaa2.setDedos(5, 2, didcad.getMinimoEsquerdo());
		dedot = idctaaa2.getDedos();
		idctaaa2.setMensagemSaida("TECLE ENTRA PARA ATUALIZAR");

	}

	private void mover() {
		if (vwDidcad.getDataAtualizacao() > 0) {
			dtat = didcad.getDataAtualizacao();
		}
		didcad.setNumeroPosto(idcpa002B.getNumposto());
		vwDidcad.setDataAtualizacao(UtilBean.obtemDataCorrente());
		didcad.setMatriculaFunc(sessao.getSisgsisp().getMatric());
		didcad.setRegistroAnterior(idctaaa2.getIregant());
		didcad.setPolegarDireito(idctaaa2.getDedos(1, 1));
		didcad.setIndicadorDireito(idctaaa2.getDedos(2, 1));
		didcad.setMedioDireito(idctaaa2.getDedos(3, 1));
		didcad.setAnularDireito(idctaaa2.getDedos(4, 1));
		didcad.setMinimoDireito(idctaaa2.getDedos(5, 1));
		didcad.setPolegarEsquerdo(idctaaa2.getDedos(1, 2));
		didcad.setIndicadorEsquerdo(idctaaa2.getDedos(2, 2));
		didcad.setMedioEsquerdo(idctaaa2.getDedos(3, 2));
		didcad.setAnularEsquerdo(idctaaa2.getDedos(4, 2));
		didcad.setMinimoEsquerdo(idctaaa2.getDedos(5, 2));
		didcad.setMatEsp(idcpa002B.getMatesp());
	}

	private void historico() {
		datatu = UtilBean.obtemDataCorrente();
		// FIND VW-DIDHIS WITH DINHID-REGGER = I-REGGER &&
		// DINHID-DATATU = DATATU &&
		// DINHID-MATRHI = MATRIC

		vwDidhis.setNumeroPosto(didcad.getNumeroPosto());
		// IF NO RECORDS

		vwDidhis.setNumeroRg(didcad.getNumeroRg());
		vwDidhis.setNomeIdent(didcad.getNomeIdent());
		vwDidhis.setNomePai(didcad.getNomePai());
		vwDidhis.setNomeMae(didcad.getNomeMae());
		vwDidhis.setEstadoCivil(didcad.getEstadoCivil());
		vwDidhis.setNacionalidade(didcad.getNacionalidadeIdent());
		vwDidhis.setNumeroCpf(didcad.getNumeroCpf());
		vwDidhis.setMatriculaFunc(didcad.getMatriculaFuncionario());
		vwDidhis.setCodigoAnomalia(didcad.getCodigoAnomalia());
		vwDidhis.setNumeroProtocolo(didcad.getNumeroProtocolo());
		vwDidhis.setPolegarDireito(didcad.getPolegarDireito());
		vwDidhis.setIndicadorDireito(didcad.getIndicadorDireito());
		vwDidhis.setMedioDireito(didcad.getMedioDireito());
		vwDidhis.setAnularDireito(didcad.getAnularDireito());
		vwDidhis.setMinimoDireito(didcad.getMinimoDireito());
		vwDidhis.setPolegarEsquerdo(didcad.getPolegarEsquerdo());
		vwDidhis.setIndicadorEsquerdo(didcad.getIndicadorEsquerdo());
		vwDidhis.setMedioEsquerdo(didcad.getMedioEsquerdo());
		vwDidhis.setAnularEsquerdo(didcad.getAnularEsquerdo());
		vwDidhis.setMinimoEsquerdo(didcad.getMinimoEsquerdo());
		vwDidhis.setDataNasc(didcad.getDataNasc());
		vwDidhis.setDataInclusao(UtilBean.obtemDataCorrente());
		vwDidhis.setMatriculaInclusao(sessao.getSisgsisp().getMatric());
		vwDidhis.setMatesp(idcpa002B.getMatesp());
		vwDidhis.setDataAtualizacao(dtat);
		vwDidhis.setHoraAtu(Integer.parseInt((new SimpleDateFormat("HHmmssS").format(Calendar.getInstance().getTime()))));
		vwDidhis.grava();
		// dao.commit();
		// dao.rollback();
	}

	// END-NOREC

	private void critica1() {
		vwTabele.pesq = UtilBean.moveSubstring(vwTabele.pesq, 0, 3, "N", 207);
		vwTabele.pesq = UtilBean.moveSubstring(vwTabele.pesq, 3, 12, "N", idcpa002B.getNumposto());
		// TABELA DE POSTO
		vwTabele.consultaTabele(207, (long) idcpa002B.getNumposto());
		// 678
		if (vwTabele.totalRegistros() == 0) {
			idctaaa2.enviarMensagem("numposto", "POSTO INVALIDO");
			return;
		}

		vwTabele.pesq = UtilBean.moveSubstring(vwTabele.pesq, 0, 3, "N", 18);
		vwTabele.pesq = UtilBean.moveSubstring(vwTabele.pesq, 3, 12, "N", idcpa002B.getMatesp());
		// TABELA DE SENHA
		vwTabele.consultaTabele(18, (long) idcpa002B.getMatesp());
		if (vwDvetab.getChaveAlfaAcesso() != idcpa002B.getSenesp()) {
			idctaaa2.enviarMensagem("senesp", "");
			return;
		}
		sislac01.niveis = dvetabVw.getDescricaoElem();
		if (!(UtilBean.subStr(sislac01.niveis, 30 + 13 - 1, 1).equals("1") || UtilBean.subStr(sislac01.niveis, 30 + 13 - 1, 1).equals("3") || UtilBean.subStr(sislac01.niveis, 30 + 13 - 1, 1).equals("5") || UtilBean.subStr(sislac01.niveis, 30 + 13 - 1, 1).equals("7"))) {
			idctaaa2.enviarMensagem("senesp", "");
			return;
		}
		if (!(UtilBean.subStr(sislac01.niveis, 30 + 11 - 1, 1).equals("1") || UtilBean.subStr(sislac01.niveis, 30 + 11 - 1, 1).equals("3") || UtilBean.subStr(sislac01.niveis, 30 + 11 - 1, 1).equals("5") || UtilBean.subStr(sislac01.niveis, 30 + 11 - 1, 1).equals("7"))) {
			idctaaa2.enviarMensagem("senesp", "");
			return;
		}

		if (vwTabele.registrosProcessados() == 0) {
			idctaaa2.enviarMensagem("matesp", "");
			return;
		}
		sessao.getSisgsisp().setMatric(idcpa002B.getMatesp());
		sessao.getSisgsisp().setSenha(idcpa002B.getSenesp());
		funcoes.tabsatu(sessao);
		if (!funcoes.camret.equals("")) {
			idctaaa2.enviarMensagem(funcoes.camret, "");
			// sessao.setAtributo ("IDCPA002", this);
			result.include("idctaaa2", idctaaa2);
			idctaaa2.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
			return;
		}
	}

	private void restaurarEstados(Idcpa002B pidcpa002B, Idctaaa2 pidctaaa2) {
		this.idcpa002Anterior = (Idcpa002) sessao.getAtributo("IDCPA002");
		if (pidcpa002B != null) {
			idcpa002B = pidcpa002B;
		} else {
			idcpa002B = this.idcpa002Anterior.idcpa002B;
		}
		idcpa002B.setSessao(sessao);
		if (pidctaaa2 != null) {
			idctaaa2 = pidctaaa2;
		} else {
			idctaaa2 = this.idcpa002Anterior.idctaaa2;
		}
		idctaaa2.setSessao(sessao);
		this.faseproc = this.idcpa002Anterior.faseproc;
		this.primeira = this.idcpa002Anterior.primeira;
	}
}
